/* The file is saved in UTF-8 codepage.
 * Check: «Stereotype», Section mark-§, Copyright-©, Alpha-α, Beta-β, Smile-☺
 */
package cz.pecinovsky.english.lootp.shapes;



////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ End of ignored starting test - place for imports +++++

//%X+ xxxxx Start of the ovejumped text with declaration of the envelope xxxxx
/*******************************************************************************
 *<pre>
 * Previous:  No - this is a newly defined type
 * Following: No
 *
 * Project  112z - Introduction into design patterns
 *   + Introduction of this interface
 *
 * Projekt  113z - Inheritance of interfaces
 *   ~ The interfaci is defined as a child of the interface {@code IChangeable}
 *</pre>
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
////////////////////////////////////////////////////////////////////////////////
//%X- ----- End of the ovejumped text with declaration of the envelope -----


/*******************************************************************************
 * Instances of interface {@code IShape} represents geometrical shapes
 * that are mind for work on a virtual canvas
 * during the first introduction to objects.
 * The position of a shape is defined as the position
 * of the upper left corner of its circumscribe rectangle.
 * The size of a shape is defined as the size
 * of its circumscribe rectangle.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
//%I+ <113
//public interface IShape
//%I-
//%A+ >113
public interface IShape extends IChangeable
//%A-
{
//== CONSTANTS =================================================================
//== DECLARED METHODS ==========================================================
//%X+ >113

    /***************************************************************************
     * Returns the horizontal coordinate.
     * The position of a shape is defined as the position
     * of the upper left corner of its circumscribe rectangle.
     *
     * @return  The horizontal coordinate,
     *          left canvas border has x=0, coordinate increases to the right
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
    public int getX();


    /***************************************************************************
     * Returns the vertical coordinate.
     * The position of a shape is defined as the position
     * of the upper left corner of its circumscribe rectangle.
     *
     * @return  The vertical coordinate,
     *          upper canvas border has y=0, coordinate increases to the down
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
    public int getY();


    /***************************************************************************
     * Set a new position of the instance.
     * The position of a shape is defined as the position
     * of the upper left corner of its circumscribe rectangle.
     *
     * @param x  The newly set horizontal coordinate,
     *           Left canvas border has x=0, coordinate increases to the right
     * @param y  The newly set vertical coordinate,
     *           upper canvas border has y=0, coordinate increases to the down
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
    public void setPosition(int x, int y);


    /***************************************************************************
     * Returns the object width.
     * The size of instance is defined as the size
     * of the circumscribe rectangle.
     *
     * @return  Object width
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
     public int getWidth();


    /***************************************************************************
     * Returns the object height.
     * The size of instance is defined as the size
     * of the circumscribe rectangle.
     *
     * @return  Object height
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
     public int getHeight();


    /***************************************************************************
     * Set dimensions of the object.
     * The size of instance is defined as the size
     * of the circumscribe rectangle.
     * The set dimensions must be non-negative,
     * the zero value is substituted by one.
     *
     * @param width    The newly set width;  width>0
     * @param height   The newly set height; height>0
     */
//%X-
//%I+ <113
////     @Override
//%I-
//%A+ <0    "Abych odstranil varování editoru
     @Override
//%A-
//%X+ >113
    public void setSize(int width, int height);

//%X-

    /***************************************************************************
     * Paints the represented shape on the canvas.
     */
//     @Override
    public void paint();


    /***************************************************************************
     * Rubs out represented shape from the canvas, it means
     * repaints it by the background color.
     */
//     @Override
    public void rubOut();


    /***************************************************************************
     * Returns a copy of the shape, which means the same shape
     * with the same position, dimension and color.
     *
     * @return The requested copy
     */
//     @Override
    public IShape copy();



//== INHERITED METHODS =========================================================
//== EMBEDDED DATA TYPES =======================================================
}
